package com.shangke.corejava.ch2;

public class DataType {

	public static void main(String[] args) {
		//基本数据类型间的转换
		byte bt = 127;//数据储存时不能超过其（储值）数据范围
		short sh = 2345;
		int i = 1234556;//整型默认是int类型的
		long l = 12342563;
		
		
		float f = 123.32f;//单精度浮点类型必须以f或F结尾
		float f1 = 123.32F;
		
		double d = 123345.245;//双精度的小数以d或D结尾，如果不写默认也是double类型
		double d1 = 124849.248d;//小数默认是double类型的
		double d2 = 3824.2047D;
		f = (float)d1;//当把一个大范围的数据转换为一个小范围时，需要进行强制转换，强制转换使用小括号（）表示
		l = (long)f; 
		//l = (long)f = (float)d1;类型强制转换不能连续转换
		
		d = f = l = i = sh = bt;//当把一个小范围的数据转换为大范围时，可以自动转换
		//long类型可以自动转换为float类型，，转换一下思想：所有的整型可以自动转换为浮点类型
		
		//字符类型
		//char ch = '';  这句语句是错误的，没有这样的控制符
		char ch1 = 'a';  //字符是单引号表示，引号内必须有一个特定的字符
		char ch2 = '&';
		char ch3 = '中';  //字符类型能不能保存汉字，单引号内保存一个中文字母就是对的，两个的话语句出现错误
		i = ch1;//char类型可以自动转换为int 类型
		ch2 = (char)i;//强制转换
		
		//字符与字符串
		String str = ""; //字符串使用双引号表示，可以是空字符串
		String str1 = null; //字符串的默认值是null，null是一种特殊的数据类型（表示没有数据），但不是空字符串
		
		boolean bool = true;//boolean类型表示一种逻辑类型，真和假，对与错，正与反
		boolean bool1 = false;
		
		//使用下划线增加数据的可阅读性
		long l4 = 1_000_000_000; //从jdk1.7开始支持下划线增加数据的可阅读性
		long l5 = 1_0000_0000;//下划线的位置不固定
		float f4 = 1234.133_3746_23f;
		//注意：小数点后面不能加，数字后面不能加，数值开头不能加
		
		//进制数
		//常用的进制数：二进制、八进制、十进制、十六进制
		//二进制：0、1
		//八进制：0、1、2、3、4、5、6、7
		//十进制：0、1、2、3、4、5、6、7、8、9
		//十六进制：0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
		
		
		//数据的表示（整数）
		//开头数 --> 二进制：0B,八进制：0，十进制：不能是0，十六进制：0X
		int i3 = 0101_0010_1101;//八进制数以零（0）开头
		i3 = 0xe3d4b4a6;
		
		//数制之间的换算
		//34转换为二进制，10011111转换为十进制
		
		//计算：2^3是多少，要求使用效率最高的方法计算

	}

}
